/*
 *
 *
 */
int CLOCK_PIN =2;
int DATA_PIN  =3;
int TR[4] = {
  16,17,18,19,};

int TR1=18;
int TR2=19;

int NONE = 10;

int NUM[11] = {
  B00000011,  // 0
  B10011111,  // 1
  B00100101,  // 2
  B00001101,  // 3
  B10011001,  // 4
  B01001001,  // 5
  B11000001,  // 6
  B00011111,  // 7 
  B00000001,  // 8
  B00011001,  // 9
  B11111111,  // NONE
};


void setup()                    // run once, when the sketch starts
{
  pinMode(CLOCK_PIN, OUTPUT);
  pinMode(DATA_PIN,  OUTPUT);
  for (int i = 0 ; i < 4 ; i++){
    pinMode(TR[i],  OUTPUT);    
    digitalWrite(TR[i], HIGH);
  }

}

void loop()                     // run over and over again
{
  int d;
  int tmp;

  for (int cnt=9 ; cnt >= 0 ; cnt--){
    shiftOut(DATA_PIN, CLOCK_PIN, LSBFIRST, NUM[cnt]);
    for (int seg=0 ; seg < 4 ; seg++){
      segOn(seg);
      delay(40);
    }
  }
}


void segOn(int digit) {
  digitalWrite(TR[digit],LOW);
  for (int i = 0 ; i < 4 ; i++){
    if ( i != digit ){
      digitalWrite(TR[i], HIGH);
    }
  }
}


